# print("hello world")
# str = "123"
# print(float(str))


# 统计字符串中的字母出现平频率

# str = "hello world"
# mid = list(str)
# mdict = {}
# for e in mid:
#     if mdict.get(e,0) == 0:   #没出现过
#         mdict[e] = 1
#     else:
#         mdict[e]+=1           #出现过

# for key,value in mdict.items():
#     print(key,value)

# 测试while

# i = 0
# x = 0
# while i<5 and x<2:
#     i+=1
#     break # break之后不走else
# else:
#     x+=1
# print(i,x)

# 测试for

# i = 1
# m = [1,2,3,4,5]
# def func():
#     x = 200
#     for x in m:
#         print(x)
#     print(x)
# func()

# 类测试


# class student:
#     def __init__(self,mname,mnumber):  #自定义初始化，无返回值
#         self.name = mname
#         self.number = mnumber
#     def getinfo(self):  #self 可以让程序知道在调用自己
#         print(self.name,self.number)
# xiaoming = student("xiaoming","22061907")
# xiaoming.getinfo()

# 牛顿迭代法
# f(g) = g^2 - 3
# f`(g) = 2g
# 切线方程：y - g^2 - 3 = 2g(x - g)
# y = 2g x - 2g^2 + g^2 +3
# y = 2g x - g^2 + 3
# (g^2 - 3)/2g

# x = 3
# while(x**x - 3>0.0001):
#     x = (x**2 - 3) / x
# print(x)

# def max_place(n):
#     if(n==1):
#         return 2
#     return max_place(n-1)+n
# print(max_place(3))

# 汉诺塔问题

# time = 1
# def move(n,X,Y,Z):
#     global time
#     if(n==1):
#         print("%d: %s->%s"%(time,X,Y))
#         time+=1
#         return
#     move(n-1,X,Z,Y)
#     move(1,X,Y,Z)
#     move(n-1,Z,Y,X)

# x = input("要转移几个盘子：")
# move(int(x),'A','B','C')
# print(time-1)

# 兔子
# 1： 1
# 2： 1
# 3： 2
# 4： 3
# 5： 5
# easy

# 二分查找递归

# pos = 0
# def search(L,x,left,right):
#     global pos
#     if(left>right):
#         pos = -1
#         return
#     mid = int((left+right)//2)
#     if(L[mid]==x):
#         pos = mid
#         return
#     elif(L[mid]>x):
#         search(L,x,left,mid-1)
#     else:
#         search(L,x,mid+1,right)
# L = [1,3,4,5,17,18,31,33]
# search(L,17,0,len(L)-1)
# print(pos)

# 动态规划找最长递增序列

L = [5, 2, 4, 7, 6, 3, 8, 9]

# 思路： 我试试用列表＋列表

# time = [1]*len(L)
# before = [-1]*len(L)

# def longest(L):
#     biggest = 0
#     index = 0
#     for i in range(1,len(L)):
#         n = 0
#         m = 1
#         for e in range(0,i):
#             if(L[i]>L[e]):
#                 if(time[e]+1>time[i]):
#                     m = time[e]+1
#                     time[i] = m
#                     before[i] = e
#         if time[i]>biggest:
#             biggest = time[i]
#             index = i
#     T = [L[index]]
#     while(before[index]!=-1):
#         T.append(L[before[index]])
#         index = before[index]
#     return T
# T = longest(L)
# print(T)

# 背包问题
# 动态规划表
# 建立二维数组表a[i][j]
# 其中i表示前i个物品的最大值
# j表示背包容量

# weight = [0, 4, 5, 2, 1, 6]
# value = [0, 45, 57, 22, 11, 67]
# m = len(weight) - 1
# n = int(input('请输入背包总量：'))
# a = [[0 for col in range(n+1)] for row in range(m+1)]


# def DP_list(m, n):
#     # 建立动态规划表
#     # 当 m or n 为 0 时，价值均为0
#     # 如果 j>w[i],a[i][j] = max(a[i-1][j],a[i-1][j-w[i]]+v[i])
#     # 如果j<w[i],a[i][j] = a[i-1][j]
#     for i in range(1, m+1):
#         for j in range(1, n+1):
#             if (j < weight[i]):
#                 a[i][j] = a[i-1][j]
#             else:
#                 a[i][j] = max(a[i-1][j], a[i-1][j-weight[i]]+value[i])
#     # 找最大值,并且找到放进去了哪几个物品
#     j = n
#     x = [False for i in range(m+1)]
#     for i in range(m, 0, -1):
#         if (a[i][j] > a[i-1][j]):
#             x[i] = True
#             j = j - weight[i]
#     return x


# x = DP_list(m, n)
# print(x)
sum = input()
print(sum)
